import numpy as np  
import pandas as pd  
import matplotlib.pyplot as plt  
  
# 设置中文字体和负号显示  
plt.rcParams['font.sans-serif'] = ['SimHei']  
plt.rcParams['axes.unicode_minus'] = False  
  
# 学生成绩数据  
student_scores = {  
    '课程名称': ['英语', '经济数学', '西方经济学', '市场营销学', '财务管理', '基础会计学', '统计学', '计算机应用基础'],  
    '学生1': [76, 65, 93, 74, 68, 70, 55, 85],  
    '学生2': [90, 95, 81, 87, 75, 73, 91, 78],  
    '学生3': [97, 51, 76, 85, 70, 92, 68, 81],  
    '学生4': [71, 74, 88, 69, 84, 65, 73, 95],  
    '学生5': [70, 78, 66, 90, 73, 78, 84, 70],  
    '学生6': [93, 63, 79, 80, 60, 87, 81, 67],  
    '学生7': [86, 91, 83, 77, 76, 90, 70, 82],  
    '学生8': [83, 82, 92, 84, 81, 70, 69, 72],  
    '学生9': [78, 75, 78, 91, 88, 66, 94, 80],  
    '学生10': [85, 71, 86, 74, 68, 79, 62, 81],  
    '学生11': [81, 55, 78, 70, 75, 68, 71, 77]  
}  
  
# 转换数据格式  
df_students = pd.DataFrame(student_scores)  
df_students_transposed = df_students.set_index('课程名称').T  
  
# 绘制11位同学成绩的箱线图  
df_students_transposed.plot.box(title="11位同学成绩箱线图", vert=False)  
plt.grid(linestyle="--", alpha=0.3)  
plt.show()  
  
# 绘制8门课程的箱线图  
df_students.set_index('课程名称').plot.box(title="8门课程成绩箱线图", vert=False)  
plt.grid(linestyle="--", alpha=0.3)  
plt.show()  
  
# 打印11位同学和8门课程的成绩分布表格  
print("11位同学成绩分布:")  
print(df_students_transposed.describe().T)  
  
print("\n8门课程成绩分布:")  
print(df_students.set_index('课程名称').describe().T)